//
//  EmoticonPackage.m
//  XinLang_OC
//
//  Created by WONG on 16/4/23.
//  Copyright © 2016年 cheuhui. All rights reserved.
//

#import "EmoticonPackage.h"
#import "Emoticon.h"



@interface EmoticonPackage ()


@end


@implementation EmoticonPackage

- (instancetype)initWithId:(NSString *)id {
    if(self = [super init]) {
        self = [[EmoticonPackage alloc] init];
        self.id = id;
    }
    return self;
}

+ (instancetype)initWithId:(NSString *)id {
    return [[EmoticonPackage alloc] initWithId:id];
}


// 字典的key在模型中找不到对应的属性, 特别注意 不要写错方法
- (void)setValue:(id)value forUndefinedKey:(NSString *)key {}

- (NSString *)description {
    return nil;
}

#warning 静态属性,保存表情包模型数据, 只会加载一次
static NSMutableArray *packagess = nil;

/**
 *  加载表情包
 */
+ (NSArray *)loadPackages {
    
    if (packagess) {
        return packagess;
    }
    
    NSString *plistPath = [bundlePath stringByAppendingPathComponent:@"emoticons.plist"];
    
    // 获取emoticons.plist内容
    NSDictionary *emoticonsDict = [[NSDictionary alloc] initWithContentsOfFile:plistPath];
    
    // 获取表情包文件夹名称 [Int] [[String: AnyObject]]: 数组里面的元素是字典
    NSArray *packageArr = emoticonsDict[@"packages"];
    
    // 存放表情包模型的数组
    NSMutableArray<EmoticonPackage *> *packages = [NSMutableArray array];
    
    // 创建“最近”表情包
    EmoticonPackage *recentPackage = [EmoticonPackage initWithId:@""];
    
    // 设置表情包名称
    recentPackage.group_name_cn = @"最近";
    
    // 添加到表情包
    [packages addObject:recentPackage];
    
    // 从Emoticons.bunble里面加载出来的
    // 遍历获取每一个表情包文件名称
    for (NSDictionary *dict in packageArr) {
        // 获取id
        NSString *id = dict[@"id"];
        
        // 创建表情包
        EmoticonPackage *package = [EmoticonPackage initWithId:id];
        
        // 根据当前表情包模型，加载表情包名称和所有的表情模型
        [package loadEmoticon];
        
        [packages addObject:package];
    }
    packagess = packages;
    return packages;
}

// 根据当前表情包模型，加载表情包名称和所有的表情模型
- (void)loadEmoticon {
    // 获取对应表情包模型里面的info.plist = bundlePath + 表情包文件夹名称 + info.plist
    NSString *infoPlist = [bundlePath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@/info.plist",self.id]];
    
    // 把info.plist的内容加载到内存
    NSDictionary *infoDict = [[NSDictionary alloc] initWithContentsOfFile:infoPlist];
    
    // 获取表情包的名称
    self.group_name_cn = infoDict[@"group_name_cn"];
    
    // 获取表情包里面所有的模型
    NSArray *emoticonArr = infoDict[@"emoticons"];
    
    // 记录
    NSInteger index = 0;
    
    // 遍历emoticonArr数组，生成表情模型
    for (NSDictionary *dict in emoticonArr) {
        // 字典转模型创建表情的时候,把表情包文件夹名称也传入进来
        Emoticon *emoticon = [Emoticon initWithId:self.id dict:dict];
        
        [self.emoticons addObject:emoticon];
        
        index++;
        
        // 判断，如果是每一页的最后一个，添加一个删除按钮
        if (index == 20) {
            // 创建删除按钮
            Emoticon *removeEmoticon = [Emoticon initWithRemoveEmoticon:YES];
            // 清空index
            index = 0;
        }
    }
    // 表情包加载完成,来判断这个表情包最后一页,是否够21格按钮.不够的话,填充空白按钮,并在最后添加一个删除按钮
    [self appendEmptyEmoticon];
}

- (void)appendEmptyEmoticon {

}




#pragma mark - lazy load




@end











